package org.huawei260.OD260;

import java.util.Arrays;
import java.util.Scanner;

/**
 * @Auther: qingle
 * @Date: 2024/8/22-2:09
 * @Description:
 *
 * 我们可以通过以下步骤来解决这个问题：
 *
 * 首先，我们需要确定k的值。由于k是喊到的最后一个数字，我们可以通过总的“过”次数来估计k的范围。总的“过”次数等于数组元素的和。
 * 然后，我们可以模拟游戏过程，记录每个人喊“过”的次数。我们从1开始，每次增加1，直到达到或超过k的估计值。
 * 当我们遇到7的倍数或含有7的数字时，我们记录喊“过”的人的编号。
 * 我们继续这个过程，直到我们模拟了足够多的轮次，直到总的“过”次数与输入数组的和相匹配。
 *
 * @version: 1.0
 */
public class O0016_喊七 {

		public static void main(String[] args) {
			Scanner scanner = new Scanner(System.in);
			String[] input = scanner.nextLine().split(" ");
			scanner.close();

			int[] counts = new int[input.length];
			for (int i = 0; i < input.length; i++) {
				counts[i] = Integer.parseInt(input[i]);
			}

			int[] order = restoreOrder(counts);
			for (int count : order) {
				System.out.print(count + " ");
			}
		}

		private static int[] restoreOrder(int[] counts) {
			int sum = Arrays.stream(counts).sum();
			int k = estimateK(sum);
			int[] order = new int[counts.length];
			int current = 1;
			int index = 0;

			for (int i = 0; i < sum; ) {
				if (current % 7 == 0 || containsSeven(current)) {
					order[index] += 1;
					i++;
				}
				current++;
				index = (index + 1) % counts.length;
			}

			return order;
		}

		private static boolean containsSeven(int number) {
			while (number > 0) {
				if (number % 10 == 7) {
					return true;
				}
				number /= 10;
			}
			return false;
		}

		private static int estimateK(int sum) {
			// 估计k的值，这里是一个简化的估计，实际可能需要更精确的计算
			// 假设每个人都至少喊了一次“过”，那么k至少是N的倍数
			return sum * 7;
		}
	}